#include <head.h>


#define NUM_THREADS 4 // 定义线程数为4

void *copy_data(void *arg)
{
    FILE *src_file = fopen("1.txt", "r"); // 打开源文件以读取数据
    FILE *dst_file = fopen("2.txt", "a"); // 打开目标文件以追加数据

    if (src_file == NULL || dst_file == NULL)
    {
        printf("打开文件错误\n");
        exit(1);
    }

    char buffer[1024];
    size_t bytes_read;

    while ((bytes_read = fread(buffer, 1, sizeof(buffer), src_file)) > 0)
    {
        fwrite(buffer, 1, bytes_read, dst_file); // 将读取的数据写入目标文件
    }

    fclose(src_file); // 关闭源文件
    fclose(dst_file); // 关闭目标文件

    return NULL;
}

int main()
{
    pthread_t threads[NUM_THREADS]; // 创建线程数组

    for (int i = 0; i < NUM_THREADS; i++)
    {
        if (pthread_create(&threads[i], NULL, copy_data, NULL) != 0)
        { // 创建线程并执行copy_data函数
            printf("创建失败 %d\n", i);
            exit(1);
        }
    }

    for (int i = 0; i < NUM_THREADS; i++)
    {
        pthread_join(threads[i], NULL); // 等待每个线程执行完毕
    }

    printf("复制成功\n");
    return 0;
}
